package br.gov.mj.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.gov.mj.model.Documento;

@ViewScoped
@ManagedBean
public class TramiteBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private List<Documento> documentos;

	private Integer codigoDocumento;

	private Documento documento;
	
	public TramiteBean() {
	}

	public List<Documento> getDocumentos() {
		if (documentos == null) {
			documentos = new ArrayList<Documento>();
			documentos.add(new Documento(1, "08084.000071/2010-11",
					"Projeto de Lei da Câmara - PI"));
			documentos.add(new Documento(2, "08084.000071/2010-12",
					"Projeto de Lei da Câmara - SC"));
		}
		return documentos;
	}

	public void setDocumentos(List<Documento> documentos) {
		this.documentos = documentos;
	}

	public void tramitar() {
		setDocumento(new Documento(3, "08084.000071/2010-12", "Teste diego"));
		exibirMsg("Tramite realizado com sucesso!", FacesMessage.SEVERITY_INFO);
		try {
			Thread.sleep(2500);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	private void exibirMsg(String str, Severity messageSeverity) {
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message = new FacesMessage(messageSeverity, str, null);
		context.addMessage(null, message);
	}

	public Integer getCodigoDocumento() {
		return codigoDocumento;
	}

	public void setCodigoDocumento(Integer codigoDocumento) {
		this.codigoDocumento = codigoDocumento;
	}

	public Documento getDocumento() {
		if (documento == null & codigoDocumento != null) {
			this.documento = carregarDocumento(codigoDocumento);
		}
		if (documento == null) {
			documento = new Documento();
		}
		return documento;
	}

	private Documento carregarDocumento(Integer codigo) {
		for (Documento doc : getDocumentos()) {
			if (doc.getCodigo().equals(codigo)) {
				return doc;
			}
		}
		return null;
	}

	public void setDocumento(Documento documento) {
		this.documento = documento;
	}

}
